@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: ============================================
:: Flutter Web 启动脚本 (通用版)
:: ============================================

echo.
echo ========================================
echo    Flutter Web 启动工具
echo ========================================
echo.

:: 设置控制台颜色
color 0A

:: 设置工作目录为脚本所在目录
cd /d "%~dp0"

:: ============================================
:: 1. 检查 Flutter 是否安装
:: ============================================
echo [1/6] 检查 Flutter 环境...
where flutter >nul 2>&1
if errorlevel 1 (
    echo [错误] 未找到 Flutter！请先安装 Flutter 并添加到 PATH 环境变量。
    echo.
    echo 安装指南: https://flutter.dev/docs/get-started/install
    pause
    exit /b 1
)
echo [√] Flutter 已安装

:: ============================================
:: 2. 清理旧的 Dart/Flutter 进程
:: ============================================
echo.
echo [2/6] 清理旧进程...
taskkill /F /IM dart.exe >nul 2>&1
taskkill /F /IM flutter.exe >nul 2>&1
timeout /t 1 /nobreak >nul
echo [√] 进程清理完成

:: ============================================
:: 3. 检查是否存在 pubspec.yaml
:: ============================================
echo.
echo [3/6] 检查项目文件...
if not exist "pubspec.yaml" (
    echo [错误] 未找到 pubspec.yaml 文件！
    echo 请确保在 Flutter 项目根目录下运行此脚本。
    pause
    exit /b 1
)
echo [√] 项目文件检查完成

:: ============================================
:: 4. 获取依赖包（可选，如需要取消注释）
:: ============================================
echo.
echo [4/6] 检查依赖包...
:: 如果需要每次启动时都更新依赖，取消下面两行的注释
:: echo 正在获取依赖包...
:: flutter pub get
echo [√] 跳过依赖包更新（如需更新请运行 flutter pub get）

:: ============================================
:: 5. 配置启动参数
:: ============================================
echo.
echo [5/6] 配置启动参数...

:: 设置 Web 端口（可自定义）
set WEB_PORT=3000

:: 设置主机名（如果 localhost 有问题，使用 127.0.0.1）
set WEB_HOSTNAME=127.0.0.1

:: 设置浏览器（chrome, edge, 或留空自动选择）
set BROWSER=edge

:: 设置额外参数
set EXTRA_ARGS=

echo [√] 端口: %WEB_PORT%
echo [√] 主机: %WEB_HOSTNAME%
echo [√] 浏览器: %BROWSER%

:: ============================================
:: 6. 启动 Flutter Web
:: ============================================
echo.
echo [6/6] 启动 Flutter Web 应用...
echo.
echo ========================================
echo    应用启动中，请稍候...
echo ========================================
echo.
echo 访问地址: http://%WEB_HOSTNAME%:%WEB_PORT%
echo.
echo 提示: 
echo - 按 Ctrl+C 可停止应用
echo - 按 R 键可热重载
echo - 按 Q 键可退出
echo.
echo ========================================
echo.

:: 构建启动命令
set RUN_CMD=flutter run -d %BROWSER% --web-port=%WEB_PORT% --web-hostname=%WEB_HOSTNAME%

:: 添加额外参数
if not "%EXTRA_ARGS%"=="" (
    set RUN_CMD=%RUN_CMD% %EXTRA_ARGS%
)

:: 执行启动命令
%RUN_CMD%

:: ============================================
:: 错误处理
:: ============================================
if errorlevel 1 (
    echo.
    echo ========================================
    echo    启动失败！
    echo ========================================
    echo.
    echo 可能的原因：
    echo 1. 端口 %WEB_PORT% 已被占用
    echo 2. 浏览器未安装或未找到
    echo 3. Flutter 项目配置错误
    echo.
    echo 解决方法：
    echo 1. 修改此脚本中的 WEB_PORT 变量
    echo 2. 安装 %BROWSER% 浏览器
    echo 3. 运行 flutter doctor 检查环境
    echo.
    pause
    exit /b 1
)

:: ============================================
:: 正常退出
:: ============================================
echo.
echo ========================================
echo    应用已停止
echo ========================================
echo.
pause
endlocal

